﻿//Created by Action Script Viewer - http://www.buraks.com/asv
package de.polygonal.ds.sort {
    import de.polygonal.ds.*;

    public function sLinkedInsertionSortCmp(_arg1:SListNode, _arg2:Function, _arg3:Boolean=false):SListNode{
        var _local8:int;
        var _local9:int;
        var _local10:*;
        var _local4:Array = [];
        var _local5:int;
        var _local6:SListNode = _arg1;
        var _local7:SListNode = _arg1;
        while (_local7) {
            var _temp1 = _local5;
            _local5 = (_local5 + 1);
            var _local11 = _temp1;
            _local4[_local11] = _local7.data;
            _local7 = _local7.next;
        };
        if (_arg3){
            if (_local5 <= 1){
                return (_local6);
            };
            _local9 = 1;
            while (_local9 < _local5) {
                _local10 = _local4[_local9];
                _local8 = _local9;
                while ((((_local8 > 0)) && ((_arg2(_local4[int((_local8 - 1))], _local10) < 0)))) {
                    _local4[_local8] = _local4[int((_local8 - 1))];
                    _local8--;
                };
                _local4[_local8] = _local10;
                _local9++;
            };
        } else {
            if (_local5 <= 1){
                return (_local6);
            };
            _local9 = 1;
            while (_local9 < _local5) {
                _local10 = _local4[_local9];
                _local8 = _local9;
                while ((((_local8 > 0)) && ((_arg2(_local4[int((_local8 - 1))], _local10) > 0)))) {
                    _local4[_local8] = _local4[int((_local8 - 1))];
                    _local8--;
                };
                _local4[_local8] = _local10;
                _local9++;
            };
        };
        _local7 = _local6;
        _local9 = 0;
        while (_local7) {
            var _temp2 = _local9;
            _local9 = (_local9 + 1);
            _local7.data = _local4[_temp2];
            _local7 = _local7.next;
        };
        return (_local6);
    }
}//package de.polygonal.ds.sort 
